home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / fb386 / superedt / s_unit.bas < prev    next >
BASIC Source File  |  1991-10-18  |  9KB  |  234 lines

  1. 1000 '
  2. 1010 '            SUPER 大戦略
  3. 1020 '                 UNIT EDITOR
  4. 1030 '                          FOR FM-TOWNS
  5. 1040 '
  6. 1050 '     注、UNITV.DATを書き込み可にしておくこと。
  7. 1060 '
  8. 1070 SCREEN@ 0:CLS:COLOR 7,0,7,0:DEFINT A-Z:WIDTH 80,25:CONSOLE 0,24,2
  9. 1100 DEF FNDATA(X)=ASC(MID$(UNIT$,X,1))
  10. 1110 DIM DAT$(5),UNIT$(125),MOVE$(11),SIKIBE1$(3),SIKIBE2$(9),WEAPON$(15),Y(14)
  11. 1130 OPEN "UNITV.DAT" FOR INPUT AS #1
  12. 1140 DAT$(0)=INPUT$(246,1)
  13. 1150 DAT$(1)=INPUT$(200,1)
  14. 1160 DAT$(2)=INPUT$(200,1)
  15. 1170 DAT$(3)=INPUT$(200,1)
  16. 1180 DAT$(4)=INPUT$(200,1)
  17. 1190 FOR I=0 TO 125
  18. 1200  UNIT$(I)=INPUT$(80,1)
  19. 1210 NEXT
  20. 1220 DAT$(5)=INPUT$(81,1):CLOSE #1
  21. 1230 OPEN "PARAM.DAT" FOR INPUT AS #1
  22. 1240 DAT$=INPUT$(131,1)
  23. 1250 DAT$=INPUT$(141,1)
  24. 1260 FOR I=0 TO 11
  25. 1270  MOVE$(I)=INPUT$(10,1)
  26. 1280  MOVE$(I)=MID$(MOVE$(I),1,4)
  27. 1290 NEXT
  28. 1300 DAT$=INPUT$(46,1)
  29. 1310 FOR I=0 TO 15
  30. 1320  WEAPON$(I)=INPUT$(18,1)
  31. 1330  WEAPON$(I)=MID$(WEAPON$(I),1,4)
  32. 1340 NEXT
  33. 1350 CLOSE #1
  34. 1360 FOR I=0 TO 3:READ SIKIBE1$(I):NEXT
  35. 1370 DATA 飛行機,ヘリコプター,陸上部隊,歩兵
  36. 1380 FOR I=0 TO 9:READ SIKIBE2$(I):NEXT
  37. 1390 DATA 戦闘機,攻撃機,ヘリ型補給部隊,輸送ヘリ
  38. 1400 DATA 戦車,対空,歩兵戦闘車,輸送車,補給車,歩兵
  39. 1430 FOR I=0 TO 14:READ Y(I):NEXT:X=0:Y=0:Y1=0
  40. 1440 DATA 0,1,2,3,4,5,6,7,9,10,17,20,21,22,23
  41. 1450 CLS
  42. 1455 FOR I=0 TO 24
  43. 1460  FOR J=0 TO 4
  44. 1470   A$=LEFT$(UNIT$(I*5+J),18)
  45. 1480   SYMBOL(J*128,I*16),A$,1,1,%7
  46. 1490  NEXT
  47. 1500 NEXT:F=0:F1=0
  48. 1510 A$=LEFT$(UNIT$(125),18)
  49. 1520 SYMBOL(0,25*16),A$,1,1,%7
  50. 1530 SYMBOL(128,25*16),"SAVE    END",1,1,%7
  51. 1540 K$=""
  52. 1550 LINE(X*128,Y*16)-(X*128+127,Y*16+15),XOR,%7,BF
  53. 1560 WHILE K$<>" "
  54. 1570  K$=INPUT$(1)
  55. 1580  VX=(ASC(K$)=29 AND X>0)-(ASC(K$)=28 AND X<4)
  56. 1590  VY=(ASC(K$)=30 AND Y>0)-(ASC(K$)=31 AND Y<25)
  57. 1600  IF VX<>0 OR VY<>0 LINE(X*128,Y*16)-(X*128+127,Y*16+15),XOR,%7,BF
  58. 1610  X=X+VX:Y=Y+VY
  59. 1620  IF VX<>0 OR VY<>0 LINE(X*128,Y*16)-(X*128+127,Y*16+15),XOR,%7,BF
  60. 1630 WEND
  61. 1640 I=X+Y*5:IF I=126 THEN *END
  62. 1645 IF I=127 END
  63. 1650 IF I>125 THEN K$="":GOTO 1560
  64. 1655 UNIT$=UNIT$(I)
  65. 1660 PALETTE 7,[0,0,0]
  66. 1670 PRINT"    名前:";LEFT$(UNIT$,18)
  67. 1680 PRINT"  移動型:";MOVE$(FNDATA(19)-1)
  68. 1690 PRINT"    燃料:";FNDATA(20)
  69. 1700 PRINT"    価格:";FNDATA(22)*256+FNDATA(21)
  70. 1710 PRINT"  移動力:";FNDATA(23)
  71. 1720 PRINT"  識別1:";SIKIBE1$(FNDATA(24))
  72. 1730 PRINT"  識別2:";SIKIBE2$(FNDATA(25)-1)
  73. 1740 PRINT"  パラメータ:武装交換 飛行部隊 被補給 補給 輸送 被輸送 占領"
  74. 1750 A=FNDATA(26):A$="            ":IF A>63 A=A-64:B$="○" ELSE B$="×"
  75. 1760 A$=A$+B$+"       ":IF A>31 A=A-32:B$="○" ELSE B$="×"
  76. 1770 A$=A$+B$+"      " :IF A>15 A=A-16:B$="○" ELSE B$="×"
  77. 1780 A$=A$+B$+"    "   :IF A>7  A=A-8 :B$="○" ELSE B$="×"
  78. 1790 A$=A$+B$+"   "    :IF A>3  A=A-4 :B$="○" ELSE B$="×"
  79. 1800 A$=A$+B$+"    "   :IF A>1  A=A-2 :B$="○" ELSE B$="×"
  80. 1810 A$=A$+B$+"   "    :IF A>0  A=A-1 :B$="○" ELSE B$="×"
  81. 1820 A$=A$+B$:PRINT A$
  82. 1830 PRINT"    補充:";FNDATA(28)
  83. 1840 PRINT      "    武器:名前  数 航空 ヘリ 陸上 兵員 "
  84. 1850 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(29)),FNDATA(35),FNDATA(43),FNDATA(44),FNDATA(45),FNDATA(46)
  85. 1860 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(30)),FNDATA(36),FNDATA(47),FNDATA(48),FNDATA(49),FNDATA(50)
  86. 1870 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(31)),FNDATA(37),FNDATA(51),FNDATA(52),FNDATA(53),FNDATA(54)
  87. 1880 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(32)),FNDATA(38),FNDATA(55),FNDATA(56),FNDATA(57),FNDATA(58)
  88. 1890 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(33)),FNDATA(39),FNDATA(59),FNDATA(60),FNDATA(61),FNDATA(62)
  89. 1900 PRINT USING"         &   & ##  ##   ##   ##   ##";WEAPON$(FNDATA(34)),FNDATA(40),FNDATA(63),FNDATA(64),FNDATA(65),FNDATA(66)
  90. 1910 PRINT      "  攻撃力:    航空 ヘリ 陸上 兵員"
  91. 1920 PRINT USING"    第一武装  ##   ##   ##   ##";FNDATA(67),FNDATA(68),FNDATA(69),FNDATA(70)
  92. 1930 PRINT USING"    第二武装  ##   ##   ##   ##";FNDATA(71),FNDATA(72),FNDATA(73),FNDATA(74)
  93. 1940 PRINT "  対空防御:";FNDATA(41)
  94. 1950 PRINT "  対地防御:";FNDATA(42)
  95. 1960 PRINT "  SAVE"
  96. 1970 PRINT "  END";
  97. 1980 '---------------------------------------------------------EDITOR
  98. 1990 K$="":J=0
  99. 2000 LOCATE 0,Y(Y1):PRINT"●";
  100. 2010 WHILE J=0
  101. 2020  K$=INPUT$(1)
  102. 2030  VY=(ASC(K$)=30 AND Y1>0)-(ASC(K$)=31 AND Y1<14)
  103. 2040  IF VY<>0 LOCATE 0,Y(Y1):PRINT "  ";
  104. 2050  Y1=Y1+VY:LOCATE 0,Y(Y1):PRINT "●";:IF K$=" "OR K$=CHR$(13) THEN J=1
  105. 2060 WEND:LOCATE 0,23:PRINT"                ";
  106. 2070 ON Y1+1 GOSUB *A,*B,*C,*D,*E,*F,*G,*H,*I,*J,*K,*L,*M,*N,*O
  107. 2080 CLS 4:GOTO 1670
  108. 2090 '--------------------------------------------------------- 
  109. 2100 *A'名前
  110. 2110  LOCATE 0,23:LINE INPUT"NAME(ANKで17文字まで)";NA$
  111. 2120  IF NA$="" THEN 2150
  112. 2130  NA$=LEFT$(NA$+"                ",17)
  113. 2140  MID$(UNIT$,1,17)=NA$:F=1
  114. 2150  RETURN
  115. 2160 *B'移動型
  116. 2170  FOR J=0 TO 11
  117. 2180   IF J=6 PRINT
  118. 2190   LOCATE J*8+(J>5)*48,23-(J>5):PRINT HEX$(J+1);MOVE$(J);
  119. 2200  NEXT:PRINT
  120. 2210  PRINT"No.":NO=VAL("&H"+INPUT$(1)):IF NO<1 OR NO>11 THEN RETURN
  121. 2220  MID$(UNIT$,19,1)=CHR$(NO)
  122. 2230  RETURN
  123. 2240 *C'燃料
  124. 2250  LOCATE 0,23:INPUT"燃料";FLUE:IF FLUE<0 OR FLUE>255 THEN RETURN
  125. 2260  MID$(UNIT$,20,1)=CHR$(FLUE)
  126. 2270  RETURN
  127. 2280 *D'価格
  128. 2290  LOCATE 0,23:INPUT"価格";MONEY!
  129. 2300  IF MONEY!<0 OR MONEY!>65535 THEN RETURN
  130. 2310  A=MONEY! MOD 256
  131. 2320  MID$(UNIT$,21,2)=CHR$(A)+CHR$((MONEY!-A)/256)
  132. 2330  RETURN
  133. 2340 *E'移動力
  134. 2350  LOCATE 0,23:INPUT"移動力";MOVE
  135. 2360  IF MOVE<0 OR MOVE>255 THEN RETURN
  136. 2370  MID$(UNIT$,23,1)=CHR$(MOVE)
  137. 2380  RETURN
  138. 2390 *F'識別1
  139. 2400  FOR J=0 TO 3
  140. 2410   LOCATE J*8,23:PRINT J;SIKIBE1$(J);
  141. 2420  NEXT:PRINT
  142. 2430  PRINT"No.",:NO$=INPUT$(1):IF NO$<"0" OR NO$>"3" THEN RETURN
  143. 2440  MID$(UNIT$,24,1)=CHR$(VAL(NO$))
  144. 2450  RETURN
  145. 2460 *G'識別2
  146. 2470  FOR J=0 TO 9
  147. 2480   IF J=5 PRINT
  148. 2490   LOCATE J*8+(J>4)*32,23-(J>4):PRINT HEX$(J+1);SIKIBE2$(J);
  149. 2500  NEXT:PRINT
  150. 2510  PRINT"No.",:NO$=INPUT$(1)
  151. 2520  IF(NO$<"0" OR NO$>"9")AND NO$<>"A" THEN RETURN
  152. 2530  IF NO$="A" THEN NO$="10"
  153. 2540  MID$(UNIT$,25,1)=CHR$(VAL(NO$))
  154. 2550  RETURN
  155. 2560 *I'補充
  156. 2570  LOCATE 0,23:INPUT"補充";A
  157. 2580  IF A<0 OR A>255 THEN RETURN
  158. 2590  MID$(UNIT$,28,1)=CHR$(A)
  159. 2600  RETURN
  160. 2610 *H'パラメーター
  161. 2620  LOCATE 0,23
  162. 2630  PRINT"1.武装交換 2.飛行部隊 3.被補給 4.補給 5.輸送 6.被輸送 7.占領"
  163. 2640  PRINT"どれを変更しますか?":NO$=INPUT$(1)
  164. 2650  IF NO$>"7" OR NO$<"1" THEN RETURN
  165. 2660  A=FNDATA(26):B=A:NO=7-VAL(NO$):IF NO=6 THEN 2700
  166. 2670  FOR J=6 TO NO+1 STEP -1
  167. 2680   IF B>2^J-1 THEN B=B-2^J
  168. 2690  NEXT
  169. 2700  IF B>2^NO-1 THEN A=A-2^NO ELSE A=A+2^NO
  170. 2710  MID$(UNIT$,26,1)=CHR$(A)
  171. 2720  RETURN
  172. 2730 *J'武装
  173. 2740  X2=0:Y2=0:J=0
  174. 2750  WHILE J=0
  175. 2760   LOCATE X2*5+9+(X2<>1),Y2+11:PRINT"*"
  176. 2770   K$=INPUT$(1)
  177. 2780   VX=(ASC(K$)=29 AND X2>0)-(ASC(K$)=28 AND X2<5)
  178. 2790   VY=(ASC(K$)=30 AND Y2>0)-(ASC(K$)=31 AND Y2<5)
  179. 2800   IF VX<>0 OR VY<>0 LOCATE X2*5+9+(X2<>1),Y2+11:PRINT " "
  180. 2810   Y2=Y2+VY:X2=X2+VX:IF K$=" " OR K$=CHR$(13) THEN J=1
  181. 2820  WEND
  182. 2830  IF K$=CHR$(13) THEN RETURN
  183. 2840  IF X2=0 THEN *J1
  184. 2850   LOCATE 0,23:INPUT "NO.",NO:IF NO<0 OR NO>255 THEN RETURN
  185. 2860   MID$(UNIT$,35-Y2*(X2=1)-Y2*(X2>1)*4-8*(X2>1)-(X2-2)*(X2>1),1)=CHR$(NO)
  186. 2870   RETURN
  187. 2880  *J1
  188. 2890   FOR J=0 TO 15
  189. 2900    IF J=8 THEN PRINT
  190. 2910    LOCATE J*8+(J>7)*64,23-(J>7):PRINT HEX$(J);".";WEAPON$(J);
  191. 2920   NEXT:PRINT
  192. 2930   PRINT"No.":NO=VAL("&h"+INPUT$(1))
  193. 2940   IF NO<0 OR NO>15 THEN RETURN
  194. 2950   MID$(UNIT$,29+Y2,1)=CHR$(NO)
  195. 2960   RETURN
  196. 2970 *K'攻撃力
  197. 2980  X2=0:Y2=0:J=0
  198. 2990  WHILE J=0
  199. 3000   LOCATE 13+X2*5,18+Y2:PRINT "*"
  200. 3010   K$=INPUT$(1)
  201. 3020   VX=(ASC(K$)=29 AND X2>0)-(ASC(K$)=28 AND X2<4)
  202. 3030   VY=(ASC(K$)=30 AND Y2>0)-(ASC(K$)=31 AND Y2<1)
  203. 3040   IF VX<>0 OR VY<>0 LOCATE 13+X2*5,18+Y2:PRINT " "
  204. 3050   Y2=Y2+VY:X2=X2+VX:IF K$=" " OR K$=CHR$(13) THEN J=1
  205. 3060  WEND
  206. 3070  IF K$=CHR$(13) RETURN
  207. 3080  LOCATE 0,23:INPUT "NO.",NO:IF NO<0 OR NO>255 THEN RETURN
  208. 3090  MID$(UNIT$,67+X2+Y2*4,1)=CHR$(NO)
  209. 3100  RETURN
  210. 3110 *L'対空防御力
  211. 3120  LOCATE 0,23:INPUT"対空防御";A
  212. 3130  IF A<0 OR A>255 THEN RETURN
  213. 3140  MID$(UNIT$,41,1)=CHR$(A)
  214. 3150  RETURN
  215. 3160 *M'対地防御力
  216. 3170  LOCATE 0,23:INPUT"対地防御";A
  217. 3180  IF A<0 OR A>255 THEN RETURN
  218. 3190  MID$(UNIT$,42,1)=CHR$(A)
  219. 3200  RETURN
  220. 3210 *N
  221. 3220  UNIT$(I)=UNIT$:F1=1
  222. 3240 *O
  223. 3250  K$=""
  224. 3260  PALETTE 7,[128,128,128]:CLS 1:IF F1=1 THEN 1450 ELSE 1560
  225. 3270 *END '--------------------------------------------------
  226. 3280 KILL"UNITV.DAT"
  227. 3290 OPEN "UNITV.DAT" FOR OUTPUT AS #1
  228. 3300 PRINT #1,DAT$(0);DAT$(1);DAT$(2);DAT$(3);DAT$(4);
  229. 3310 FOR I=0 TO 125
  230. 3320  PRINT #1,UNIT$(I);
  231. 3330 NEXT
  232. 3340 PRINT #1,DAT$(5);
  233. 3350 CLOSE #1
  234.